Фундаментальный переход в высокопроизводительных вычислениях заключается в переходе от последовательной модели выполнения, ориентированной на центральный процессор, к раздельной модели производитель-потребитель, при которой центральный процессор управляет потоком данных, а графический процессор работает независимо. Основная идея заключается в том, что графический процессор не предназначен для работы как строго синхронного устройства; если рассматривать его как такое устройство, возникает «проблема ожидания».
1. Жизненный цикл рабочего процесса
При асинхронном подходе разработчик не ждет завершения каждой задачи. Вместо этого он выделяет память, запускает ядра, и возвращает результаты результаты, помещая неблокирующие запросы в аппаратную очередь.
2. Преодоление простоев
Когда хосту принуждают синхронизироваться после каждой операции, время задержки — время передачи между ЦП и ГПУ — определяет производительность. Используя асинхронность, ЦП продолжает работать, пока ГПУ обрабатывает свой поток, что максимизирует загрузку аппаратных ресурсов.
$$\text{Общее время} = \max(\text{Работа ЦП}, \text{Работа ГПУ}) + \text{Накладные расходы на синхронизацию}$$